<?php

class CieloRegistro extends CieloBaseRequest {

    protected $fields = array(
        'identificacao',
        'modulo',
        'operacao',
        'ambiente',
        'bin_cartao',
        'idioma',
        'valor',
        'pedido',
        'descricao',
        'bandeira',
        'forma_pagamento',
        'parcelas',
        'autorizar',
        'capturar',
        'campo_livre',
    );
    
    public function rules() {
        return array(
            array('identificacao, modulo, operacao, ambiente, valor, pedido, bandeira, forma_pagamento, parcelas, autorizar, capturar', 'required'),
            array('identificacao, valor, parcelas', 'match', 'pattern' => '/^[0-9]+$/'),
            array('modulo', 'in', 'range' => array('CIELO')),
            array('operacao', 'in', 'range' => array('Registro')),
            array('ambiente', 'in', 'range' => array('PRODUCAO', 'TESTE')),
            array('bin_cartao', 'match', 'pattern' => '/^[0-9]{6}$/'),
            array('idioma', 'in', 'range' => array('PT', 'EN', 'ES')),
            array('bandeira', 'in', 'range' => array('visa', 'mastercard')),
            array('forma_pagamento', 'in', 'range' => array(1, 2, 3, 'A')),
            array('autorizar', 'match', 'pattern' => '/^[0-3]$/'),
            array('capturar', 'in', 'range' => array(true, false)),
            array('valor', 'length', 'max' => 12),
            array('pedido', 'length', 'max' => 20),
            array('descricao', 'length', 'max' => 1024),
            array('forma_pagamento', 'length', 'max' => 3),
            array('campo_livre', 'length', 'max' => 128),
        );
    }

    public function beforeValidate() {
        if ($this->forma_pagamento == 1 || $this->forma_pagamento == 'A')
            $this->parcelas = 1;

        return true;
    }
    
}
